home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
tools
/
ask
/
source_
/
keepchk.s
< prev
next >
Wrap
Text File
|
1997-02-26
|
2KB
|
93 lines
* 自分自身が常駐しているかどうか調べる
* Oh!X 1992/3 p68+ちょっと改良
.include doscall.mac
.include pspdef.mac
*
.xdef keepchk
*
.text
.even
*
keepchk:
*
*入力
* 4(sp).l 自分自身のメモリ管理ポインタ
* 8(sp).l プログラム先頭から識別文字までのバイト数
*出力
* d0.b 常駐しているかどうか
* = 0 ... 常駐していない
* = -1 ... 常駐している
* d1.b Human68kから直接起動されたかどうか
* = 0 ... command.xなどから起動
* = -1 ... Human68kから直接起動
* a0 メモリ管理ポインタ
* d0.b = 0 ... 自分自身のメモリポインタ
* d0.b = -1 ... 見つけた常駐プロセスのメモリポインタ
MYMP = 4+4*3+4*4 * sp,d2-d4/a1-a4
movem.l d2-d4/a1-a4,-(sp)
movem.l MYMP(sp),a0/a4
move.l a0,d4 * 保存
lea.l PSPSIZ(a4),a4
lea.l 0(a0,a4.l),a1
movea.l a1,a2
moveq.l #-1,d3
lenlp: addq.w #1,d3
tst.b (a2)+
bne lenlp
clr.l -(sp)
DOS _SUPER
move.l d0,(sp)
movea.l MOTHER(a0),a0
move.l MOTHER(a0),d0
seq.b d1
beq chk0
chklp0: movea.l d0,a0
move.l MOTHER(a0),d0
bne chklp0
chk0: moveq.l #-1,d2
chklp1: cmp.b KEEPFLAG(a0),d2
bne chknx1
lea.l 0(a0,a4.l),a2
adda.w d3,a2
cmpa.l MEMEND(a0),a2
bcc chknx1
suba.w d3,a2
movea.l a1,a3
move.w d3,d0
cmplp: cmpm.b (a3)+,(a2)+
dbne d0,cmplp
beq found
chknx1: move.l NEXTMEM(a0),d0
bne ok
nfound: movea.l d4,a0
bra done
ok: movea.l d0,a0
bra chklp1
found: moveq.l #0,d2
done: tst.b (sp)
bmi skip
DOS _SUPER
skip: addq.w #4,sp
tst.b d2
seq.b d0
movem.l (sp)+,d2-d4/a1-a4
rts
*
.end